/**
 * 移动障碍物类
 * 表示地图上会移动的障碍物
 */
class MovingObstacle {
    /**
     * @param {number} x - 初始X坐标
     * @param {number} y - 初始Y坐标
     * @param {number} width - 宽度（格子数）
     * @param {number} height - 高度（格子数）
     * @param {number} cellSize - 每个格子的像素大小
     */
    constructor(x, y, width, height, cellSize) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        this.cellSize = cellSize;
        this.speed = 1;  // 移动速度
        // 随机初始化移动方向
        this.dx = Math.random() < 0.5 ? -this.speed : this.speed;
        this.dy = Math.random() < 0.5 ? -this.speed : this.speed;
    }

    /**
     * 更新障碍物位置
     * @param {number} maxWidth - 地图最大宽度
     * @param {number} maxHeight - 地图最大高度
     */
    update(maxWidth, maxHeight) {
        // 更新位置
        this.x += this.dx;
        this.y += this.dy;

        // 碰到边界时反弹
        if (this.x <= 0 || this.x >= maxWidth - this.width * this.cellSize) {
            this.dx *= -1;
        }
        if (this.y <= 0 || this.y >= maxHeight - this.height * this.cellSize) {
            this.dy *= -1;
        }
    }

    /**
     * 绘制障碍物
     * @param {CanvasRenderingContext2D} ctx - Canvas上下文
     */
    draw(ctx) {
        ctx.fillStyle = '#666666';
        ctx.fillRect(
            this.x,
            this.y,
            this.width * this.cellSize,
            this.height * this.cellSize
        );
    }
} 